<template>
  <div class="valid-code disabled-select" style="width: 100%; height: 100%" @click="refreshCode">
    <span v-for="(item, index) in codeList" :key="index" :style="getStyle(item)">{{ item.code }}</span>
  </div>
</template>

<script>
export default {
  name: "ValidCode", // 组件名通常使用 PascalCase
  data() {
    return {
      length: 4,
      codeList: []
    };
  },
  mounted() {
    this.createdCode();
  },
  methods: {
    refreshCode() {
      this.createdCode();
    },
    createdCode() {
      let len = this.length,
          codeList = [],
          chars = 'ABCDEFGHIJKLMNOPQRESTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
          charsLen = chars.length;

      for (let i = 0; i < len; i++) {
        let rgb = [
          Math.round(Math.random() * 220),
          Math.round(Math.random() * 240),
          Math.round(Math.random() * 200)
        ];
        codeList.push({
          code: chars.charAt(Math.floor(Math.random() * charsLen)),
          color: `rgb(${rgb})`,
          padding: `${[Math.floor(Math.random() * 10)]}px`,
          transform: `rotate(${Math.floor(Math.random() * 90)-Math.floor(Math.random()*90)}deg)`
        });
      }

      this.codeList = codeList;
      this.$emit('update:value', codeList.map(item => item.code).join(''));
    },
    getStyle(data) {
      // 确保使用模板字符串，并正确引用变量
      return `color: ${data.color}; font-size: 18px; padding: ${data.padding}; transform: ${data.transform};`;
    }
  }
};
</script>

<style>
.valid-code {
display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}
.valid-code span {
  display: inline-block;
  /* 如果需要，可以在这里设置更具体的样式 */
}
</style>